package com.lujieni.springboothutool.enums;

import cn.hutool.extra.spring.SpringUtil;
import com.lujieni.springboothutool.service.PayService;
import com.lujieni.springboothutool.service.impl.AliPayServiceImpl;
import com.lujieni.springboothutool.service.impl.WechatPayServiceImpl;

import java.util.Objects;

public enum PayServiceSelectorEnum {

    WECHAT_PAY_SERVICE("wechat", WechatPayServiceImpl.class),

    ALI_PAY_SERVICE("ali", AliPayServiceImpl.class);

    private String label;

    private Class<? extends PayService> clazz;

    PayServiceSelectorEnum(String label, Class<? extends PayService> clazz){
        this.label = label;
        this.clazz = clazz;
    }

    private PayService select(){
        return SpringUtil.getBean(clazz);
    }

    public static PayService getByLabel(String label){
        for(PayServiceSelectorEnum item : PayServiceSelectorEnum.values()){
            if(Objects.equals(item.label, label)){
                return item.select();
            }
        }
        return null;
    }

}
